 # -*- coding: utf-8 -*-
import string
from math import pi

#dir(str)  可以查看所有string的方法

demo1="hello %s,%s said" 
demo2=('world','he')
print demo1 % demo2

demo3='pai is: %.2f'
demo4= pi
print demo3 % demo4

demo5='%s,%s,3,%s'
demo6=(1,2,4)
print '%s,%s,3,%s' % demo6
print demo5 % demo6

#String
#(1) find() 返回第一个出现的索引  如果没有返回-1   in返回Boolean
name='wang wei ya'
print name.find('w')
print name.find('s')
print 'w' in name
#这个方法还可以接受可选的起始点和结束点参数
subject='@@@wangweiya@@@'
print subject.find('@@@')  #返回0
print subject.find('@@@',4)#返回12
print subject.find('@@@',1,12)  #返回-1

#(2) join()   他是split方法的逆方法，用来连接序列中的元素   序列中的元素必须是STR
nums=['1','2','3','4']
fuhao='+'
print fuhao.join(nums)

path=['','demo1','lession1']
print 'C:'+'\\'.join(path) 
print '\\'.join(path)

#(3) lower()  返回字符串的小写
name='WANGWEIYA'
print name.lower() #wangweiya

#(4) title()   字符串的所有单词首字母大写
str_1='this is a dog'
print str_1.title() # This Is A Dog
print '-------------------------'  
#(5) capwords函数　字符串的所有单词首字母大写
str_5='this is a dog.'
print string.capwords(str_5) # This Is A Dog.

#(6) replace() 返回某字符串的所有匹配项均被替换
str_2='wangweiya'
print str_2.replace('weiya','kun')

#(7)  split() 他是join的逆方法，用来将字符串分割成序列
str_3='1+2+3+4'
print str_3.split('+')

#(8) strip():去除两侧空格  lstrip():左去除空格  rstrip():右去除空格
str_4='      wangweiya       '
print str_4.strip() 

#(9) translate()  可以替换字符串中的某些部分，只处理单个字符。他的优势可以同时进行多个替换，比replace效率高的多  ？ 

#(10)endswith()  用于判断字符串是否以指定的字符串结尾，返回True or False ,可选参数为star 和 end 检索字符串的开始与结束位置
str1='this is my book.'
print str1.endswith('k.')   #True
print str1.endswith('k.',0,10)  #False

#(11)splitlines   按照行('\r', '\r\n', \n')分隔，返回一个包含各行作为元素的列表，如果参数 keepends 为 False，不包含换行符，如果为 True，则保留换行符。
name5='wang\nwei\rya\rwangkun\r\nmili'
name6='wang\nwei\rya\rwangkun\n\rmili'
print name5.splitlines()  # ['wang', 'wei', 'ya', 'wangkun', 'mili']
print name6.splitlines()  # ['wang', 'wei', 'ya', 'wangkun', '', 'mili']

#(12)zfill(width)   参数是字符串宽度  如果不够宽度0填充
str2='wangweiya'
print str2.zfill(12)

#(13)swapcase  把一个字符串大小写互换
str3='HELLO world.'
print str3.swapcase() # hello WORLD.

#(14)capitalize()  只会把字符串下标为0位置的字母转换成大写 如果index[0] 位置不是字母,原字符串不会改变
str4='wangweiya'
str5=' wangweiya'
print str4.capitalize()  #Wangweiya
print str5.capitalize()  # wangweiya

#(15)rindex(str,star,end)/rfind(str,star,end)     str最后出现的下标
str6='wanw'
print str6.rfind('w')  # 3

#(16)ljust(width,'...')  字符串左对齐  （指定长度，用什么填充剩余部分）
str7='wang'
print str7.ljust(20,'+')  # wang++++++++++++++++

#(17)返回布尔值的几个方法
name3='Wang Weiya'
print name3.isupper()  # str 是否为大写
print name3.islower()  # str 是否为小写
print name3.istitle()  # str 的单词首字母是否为大写

#(18)partition() 方法用来根据指定的分隔符将字符串进行分割。
#如果字符串包含指定的分隔符，则返回一个3元的元组，第一个为分隔符左边的子串，第二个为分隔符本身，第三个为分隔符右边的子串。

str_6= "http://www.w3cschool.cc/"
print str_6.partition("://")  # ('http', '://', 'www.w3cschool.cc/')

#(19)expandtabs(tabsize=8) 方法把字符串中的 tab 符号('\t')转为空格,默认是8
str_7='wang	wei'
print str_7.expandtabs()    # wang    wei
print str_7.expandtabs(8)   # wang    wei
print str_7.expandtabs(10)  # wang      wei    算上前面的字符是8

#(20) translate() 方法根据参数table给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到 del 参数中。
# str.translate(table[, deletechars]);  table -- 翻译表，翻译表是通过maketrans方法转换而来。deletechars -- 字符串中要过滤的字符列表。
from string import maketrans   # 引用 maketrans 函数。

intab = "aeiou"
outtab = "12345"
trantab = maketrans(intab, outtab)

str = "this is string example....wow!!!";
print str.translate(trantab);         # th3s 3s str3ng 2x1mpl2....w4w!!!

intab1 = "wa"
outtab1 = "12"
trantab1 = maketrans(intab1, outtab1)
str = "wang";
print str.translate(trantab1, 'ng');  # 12










